
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_Hans">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>FAQ：概述 &#8212; Django 3.2.6.dev 文档</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="FAQ：安装" href="install.html" />
    <link rel="prev" title="Django FAQ" href="index.html" />



 
<script src="../templatebuiltins.js"></script>
<script>
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);</script>

  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 3.2.6.dev 文档</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="index.html" title="Django FAQ">previous</a>
     |
    <a href="index.html" title="Django FAQ" accesskey="U">up</a>
   |
    <a href="install.html" title="FAQ：安装">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="faq-general">
            
  <div class="section" id="s-faq-general">
<span id="faq-general"></span><h1>FAQ：概述<a class="headerlink" href="#faq-general" title="永久链接至标题">¶</a></h1>
<div class="section" id="s-why-does-this-project-exist">
<span id="why-does-this-project-exist"></span><h2>这个项目因何存在。<a class="headerlink" href="#why-does-this-project-exist" title="永久链接至标题">¶</a></h2>
<p>Django 从一个非常实际的需求成长而来：World Web 是一家新闻网站，负责在新闻截止期限内建立密集的 Web 应用程序。 在快节奏的新闻编辑室，World Online 往往需要几个小时内将一个复杂的 Web 应用程序从概念推向发布上线。</p>
<p>与此同时，World Online 的 Web开发者在 Web 开发的最佳实践方面一直是完美主义者。</p>
<p>在2003年秋季，世界在线开发者（Adrian Holovaty 和 Simon Willison）放弃 PHP 而开始使用 Python 开发网站。 当他们构建了密集的，强互动性的网站时（如 Lawrence.com），他们开始提取一个通用的 Web 开发框架，使他们可以更快地构建 Web 应用程序。 两年内他们经常调整和改进这个框架。</p>
<p>在 2005 年夏天，World Online 决定开源 Django。如果没有大量的开源项目  - “Apache”，“Python” 和 “PostgreSQL” 等等，Django 是不可能完成的 - 我们很高兴能够回馈一些东西给开源社区。</p>
</div>
<div class="section" id="s-what-does-django-mean-and-how-do-you-pronounce-it">
<span id="what-does-django-mean-and-how-do-you-pronounce-it"></span><h2>“Django”是什么意思，怎么发音？<a class="headerlink" href="#what-does-django-mean-and-how-do-you-pronounce-it" title="永久链接至标题">¶</a></h2>
<p>Django 的名字来源于 Django Reinhardt，一个活跃在1930 年到 1950 年代初期的吉普赛吉他工作室，直到今天，他们依然被认为是史上最好的吉他手之一。</p>
<p>聆听他的音乐. 你会喜欢它的.</p>
<p>Django 发音为 <strong>JANG</strong>，使用 FANG 来押韵，字母 &quot;D &quot;是不发声的.</p>
<p>我们也记录了一段 <a class="reference external" href="https://www.red-bean.com/~adrian/django_pronunciation.mp3">发音的音频片段</a>.</p>
</div>
<div class="section" id="s-is-django-stable">
<span id="is-django-stable"></span><h2>Django 稳定吗?<a class="headerlink" href="#is-django-stable" title="永久链接至标题">¶</a></h2>
<p>是的，它相当稳定。 Disqus, Instagram, Pinterest, 还有 Mozilla 等公司使用 Django 很多年了。使用 Django 搭建的网站能承受每秒 50000 次点击的流量峰值。</p>
</div>
<div class="section" id="s-does-django-scale">
<span id="does-django-scale"></span><h2>Django 可扩展吗?<a class="headerlink" href="#does-django-scale" title="永久链接至标题">¶</a></h2>
<p>是的，与程序调试时间相比，硬件很便宜，所以 Django 被设计的尽可能多的利用硬件的性能。</p>
<p>Django 使用“无共享”体系结构，这意味着您可以在任何级别添加硬件——数据库服务器，缓存服务器或 Web /应用程序服务器。</p>
<p>该框架将组件完全分离，如数据库层和应用程序层。它附带了一个简单但强大的 :doc:<a href="#id1"><span class="problematic" id="id2">`</span></a>缓存框架&lt;/topics/cache&gt; <a href="#id3"><span class="problematic" id="id4">`</span></a>.</p>
</div>
<div class="section" id="s-who-s-behind-this">
<span id="who-s-behind-this"></span><h2>谁在这背后？<a class="headerlink" href="#who-s-behind-this" title="永久链接至标题">¶</a></h2>
<p>Django 最初是在美国堪萨斯州劳伦斯市一家报纸的网络部门 World Online 开发的。Django 现在由一个国际 <a href="#id1"><span class="problematic" id="id2">`志愿者小组&lt;https://www.djangoproject.com/foundation/teams/&gt;`_</span></a> 运行。</p>
</div>
<div class="section" id="s-how-is-django-licensed">
<span id="how-is-django-licensed"></span><h2>Django 是如何授权的？<a class="headerlink" href="#how-is-django-licensed" title="永久链接至标题">¶</a></h2>
<p>Djaon 基于 <a class="reference external" href="https://github.com/django/django/blob/main/LICENSE">the 3-clause BSD license</a> 发布。这是一份开源协议，它允许你修改和再次分发 Django。</p>
</div>
<div class="section" id="s-why-does-django-include-python-s-license-file">
<span id="why-does-django-include-python-s-license-file"></span><h2>为什么 Django 包含 Python 的协议文件？<a class="headerlink" href="#why-does-django-include-python-s-license-file" title="永久链接至标题">¶</a></h2>
<p>Django 包含源自 Python 的标准库。Python 是在开源许可协议下发布的。Django 包含了 <cite>一份 Python 协议 &lt;LICENSE.python&gt;</cite>，这是为了遵守 Python 的要求。</p>
</div>
<div class="section" id="s-which-sites-use-django">
<span id="which-sites-use-django"></span><h2>哪些站点使用 Django?<a class="headerlink" href="#which-sites-use-django" title="永久链接至标题">¶</a></h2>
<p><cite>DjangoSites.org</cite> 的特色是提供一个不断增长的使用 Django 搭建的网站的列表。</p>
</div>
<div class="section" id="s-django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names">
<span id="s-faq-mtv"></span><span id="django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names"></span><span id="faq-mtv"></span><h2>Django 似乎是一个 MVC 框架，但是您将控制器称为“视图”，并视图称为“模板”。 为什么不使用标准命名？<a class="headerlink" href="#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names" title="永久链接至标题">¶</a></h2>
<p>当然，标准化的名称是有争议的。</p>
<p>在我们对 MVC 的解释中，“视图”描述了呈现给用户的数据。数据看起来怎么样并不重要，重要的是哪些数据被呈现。该视图描述了 <em>您看到了哪些数据</em>，而不是 <em>您怎么看到数据</em>。这是一个微妙的区别。</p>
<p>所以，在我们的例子里，一个&quot;视图(view)&quot;是 Python 中针对一个特定 URL 的回调函数，此回调函数描述了需要展示的数据。</p>
<p>此外，将内容和展示效果分开是很明智的，展示效果就是模板。在 Django 里面，一个视图（view）描述了哪些数据会被展示，但是一个视图通常代表了一个模板，这个模板描述了数据是如何被展示的。</p>
<p>那控制器（Controller）在什么位置？在 Django 中，控制器可能指的是框架本身，框架会根据 Django 的 URL 配置，将请求分发到适当的视图（view）。</p>
<p>如果你想要首字母缩写, 你可能会说 Django 是一个 &quot;MTV &quot; 框架--即 &quot;模型(Model) &quot;、 &quot;模板(Template)&quot; 和 &quot;视图(View). 这种划分更有意义。</p>
<p>归根结底，还是要把事情做好。而且，不管事物怎么命名，Django 都能以一种最符合我们逻辑的方式来完成事情。</p>
</div>
<div class="section" id="s-framework-x-does-feature-y-why-doesn-t-django">
<span id="framework-x-does-feature-y-why-doesn-t-django"></span><h2>&lt;Framework X&gt;可以做到&lt;feature Y&gt;--为什么 Django 不能呢？<a class="headerlink" href="#framework-x-does-feature-y-why-doesn-t-django" title="永久链接至标题">¶</a></h2>
<p>我们清楚的知道，其他还有很棒的 web 框架，而且我们也不反对在适当的情况下借鉴想法。但是，Django 的开发恰恰是因为我们对现状的不满，所以请注意“因为&lt;Framework X&gt;所以”不会成为将特定功能加到 Django 的充分理由。</p>
</div>
<div class="section" id="s-why-did-you-write-all-of-django-from-scratch-instead-of-using-other-python-libraries">
<span id="why-did-you-write-all-of-django-from-scratch-instead-of-using-other-python-libraries"></span><h2>为什么你要从头开始写所有的 Django 项目，而不是使用其他 Python 库？<a class="headerlink" href="#why-did-you-write-all-of-django-from-scratch-instead-of-using-other-python-libraries" title="永久链接至标题">¶</a></h2>
<p>当 Django 最初设计时，Adrian 和 Simon 花了很多时间去研究各种各样已经存在的 Python Web 框架。</p>
<p>在我们看来，没有一个能完全达到所需的标准。</p>
<p>我们很挑剔。甚至你可以说我们是完美主义者。（有截止期限的）</p>
<p>随着时间的推移，我们偶然发现那些我们已经完成的开源库。很高兴看到其他人用类似的办法解决类似的问题，但是将外部代码整合已经太晚了：我们已经在几种生成环境中编写，测试并实现了我们的框架--而且我们自己的代码愉快的满足了我们的需求。</p>
<p>然而，在大多数情况下，我们发现有的框架／工具不可避免地存在某种致使我们过于拘谨的基本致命缺陷。没有工具可以100%符合我们的原理。</p>
<p>正如我们所说的：我们很挑剔</p>
<p>我们的设计理念请参照 <a class="reference internal" href="../misc/design-philosophies.html"><span class="doc">设计哲学页面</span></a>.</p>
</div>
<div class="section" id="s-is-django-a-content-management-system-cms">
<span id="is-django-a-content-management-system-cms"></span><h2>Django 是个内容管理系统(CMS)吗?<a class="headerlink" href="#is-django-a-content-management-system-cms" title="永久链接至标题">¶</a></h2>
<p>Django 不是一个 CMS 或任何意义上的“一站式解决方案”。它是一个 Web 框架；它是一个让你建立网站的编程工具。</p>
<p>例如，将 Django 和 <a class="reference external" href="https://www.drupal.org/">Drupal</a> 进行比较毫无意义，因为 Django 是用来创建 Drupal 之类的框架。</p>
<p>是的，Django 的自动管理站点非常棒且节省时间——但管理站点是 Django 框架的一个模块。此外，虽然 Django 为构建“CMS-y”应用程序提供了特殊的便利，但这并不意味着它不适合构建“非-CMS-y”应用程序（不管这意味着什么！）。</p>
</div>
<div class="section" id="s-how-can-i-download-the-django-documentation-to-read-it-offline">
<span id="how-can-i-download-the-django-documentation-to-read-it-offline"></span><h2>我如何下载 Django 文档进行离线阅读？<a class="headerlink" href="#how-can-i-download-the-django-documentation-to-read-it-offline" title="永久链接至标题">¶</a></h2>
<p>Django 文档可以在每个 Django 版本压缩包的 &quot;docs&quot; 目录中找到。这些文档采用 reST（reStructuredText）格式，每个文本文件都对应官方 Django 网站上的页面。</p>
<p>由于文档存储在 <a class="reference external" href="docs">stored in revision control</a> ，所以你可以像浏览代码变更一样浏览文档变更。</p>
<p>从技术上讲，Django 网站上的文档通常是由这些最新开发版本的 reST 文档生成，所以 Django 网站上提供的文档内容可能多于最新 Django 版本中的文档内容。</p>
</div>
<div class="section" id="s-how-do-i-cite-django">
<span id="how-do-i-cite-django"></span><h2>如何引用 Django？<a class="headerlink" href="#how-do-i-cite-django" title="永久链接至标题">¶</a></h2>
<p>出于两个原因，很难提供正式的引文格式：出版物之间的引文格式可能会有很大差异，软件的引用标准仍然是一些争议的问题。</p>
<p>例如，<a class="reference external" href="https://apastyle.apa.org/">APA style</a>，命令类似:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">Django</span> <span class="p">(</span><span class="n">Version</span> <span class="mf">1.5</span><span class="p">)</span> <span class="p">[</span><span class="n">Computer</span> <span class="n">Software</span><span class="p">]</span><span class="o">.</span> <span class="p">(</span><span class="mi">2013</span><span class="p">)</span><span class="o">.</span> <span class="n">Retrieved</span> <span class="kn">from</span> <span class="nn">https</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">.</span><span class="n">djangoproject</span><span class="o">.</span><span class="n">com</span><span class="o">/.</span>
</pre></div>
</div>
<p>但是，唯一真正的指南就是您出版商将接受的内容，因此请获得这些指南的副本并尽可能填补空缺。</p>
<p>如果您的引用样式指南需要发布者名称，请使用&quot;Django Software Foundation&quot;。</p>
<p>如果您需要发布位置，请使用&quot;Lawrence, Kansas&quot;。</p>
<p>If you need a web address, use <a class="reference external" href="https://www.djangoproject.com/">https://www.djangoproject.com/</a>.</p>
<p>如果你需要一个名字，只需使用“django”，没有任何修饰符号</p>
<p>如果您需要发布日期，请使用您所引用版本的发布年份（例如，2013 for v1.5）</p>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">FAQ：概述</a><ul>
<li><a class="reference internal" href="#why-does-this-project-exist">这个项目因何存在。</a></li>
<li><a class="reference internal" href="#what-does-django-mean-and-how-do-you-pronounce-it">“Django”是什么意思，怎么发音？</a></li>
<li><a class="reference internal" href="#is-django-stable">Django 稳定吗?</a></li>
<li><a class="reference internal" href="#does-django-scale">Django 可扩展吗?</a></li>
<li><a class="reference internal" href="#who-s-behind-this">谁在这背后？</a></li>
<li><a class="reference internal" href="#how-is-django-licensed">Django 是如何授权的？</a></li>
<li><a class="reference internal" href="#why-does-django-include-python-s-license-file">为什么 Django 包含 Python 的协议文件？</a></li>
<li><a class="reference internal" href="#which-sites-use-django">哪些站点使用 Django?</a></li>
<li><a class="reference internal" href="#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names">Django 似乎是一个 MVC 框架，但是您将控制器称为“视图”，并视图称为“模板”。 为什么不使用标准命名？</a></li>
<li><a class="reference internal" href="#framework-x-does-feature-y-why-doesn-t-django">&lt;Framework X&gt;可以做到&lt;feature Y&gt;--为什么 Django 不能呢？</a></li>
<li><a class="reference internal" href="#why-did-you-write-all-of-django-from-scratch-instead-of-using-other-python-libraries">为什么你要从头开始写所有的 Django 项目，而不是使用其他 Python 库？</a></li>
<li><a class="reference internal" href="#is-django-a-content-management-system-cms">Django 是个内容管理系统(CMS)吗?</a></li>
<li><a class="reference internal" href="#how-can-i-download-the-django-documentation-to-read-it-offline">我如何下载 Django 文档进行离线阅读？</a></li>
<li><a class="reference internal" href="#how-do-i-cite-django">如何引用 Django？</a></li>
</ul>
</li>
</ul>

  <h4>上一个主题</h4>
  <p class="topless"><a href="index.html"
                        title="上一章">Django FAQ</a></p>
  <h4>下一个主题</h4>
  <p class="topless"><a href="install.html"
                        title="下一章">FAQ：安装</a></p>
  <div role="note" aria-label="source link">
    <h3>本页</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/faq/general.txt"
            rel="nofollow">显示源代码</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>快速搜索</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="转向" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">7月 23, 2021</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="index.html" title="Django FAQ">previous</a>
     |
    <a href="index.html" title="Django FAQ" accesskey="U">up</a>
   |
    <a href="install.html" title="FAQ：安装">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>